// 该文件用于对 axios 做封装

import axios from "axios";

// 为了不隐藏到axios本身，可能该项目中有多个地方需要不同的 axios 配置
//    于是选择 axios.create() 创建出一个 axios 实例对象的方式来处理，后续的基本配置可以直接在实例对象上配置
//     创建出的实例对象由于原本axios一样的API
//        request.get()
//        request.post()
const request = axios.create({
  // 配置项
  baseURL: "http://localhost:3000",
  timeout: 3 * 1000,
});

// 请求拦截器
request.interceptors.request.use(
  (config) => {
    // TODO...
    return config;
  },
  (error) => {
    // TODO...
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  (response) => {
    // TODO...
    return response.data;
  },
  (error) => {
    // TODO...
    return Promise.reject(error);
  }
);

// 导出 request
export default request;
